Web services are a new and rapidly growing technology that promises to revolutionize the way business-to-business and business-to-consumer services are provided and used. Web services comprise web-based applications that dynamically interact with other Web applications based on open standards that include XML, UDDI and SOAP. XML (“EXtensible Markup Language”) is at the core of the Web services and provides a mechanism for communications with the Web services. SOAP (“Simple Object Access Protocol”) is the connection protocol that describes envelope and message formats for messages used to communicate with the Web services and has a basic request/response handshake protocol. The Web services can register themselves in a UDDI (“Universal Description, Discovery and Integration”) directory to allow others on the network to discover them. The Web Services Description Language (WSDL) is an XML-based language commonly used for describing the capabilities of the Web services and the protocols and formats used by the services. When a client wants to use a Web service, it first queries the Web service, and the service sends its WSDL description to the client to enable the client to use its service.
Directory service is one of the most common forms of services used in the Internet or other large networks. With the trend to run services on the Internet as Web services, it is desirable to implement directory service in such a way that the directory data are accessed as a form of Web service. It is, however, not a straightforward matter to convert current directory services into Web services. Web services normally use SOAP over HTTP as the transport, which is stateless in nature. This brings several challenges in making a session-oriented protocol, such as LDAP (“Lightweight Directory Access Protocol”) that is commonly implemented in directory services, to act as a Web service. In addition to this issue, another challenge is to design a simple way to access the directory service that fits the simple request/response model of current Web services. A chatty protocol is not desirable in designing Web services. Also, it is preferable to keep the directory operations simple and concise to conform to the CRUD (“Create, Read, Update, Delete”) model.
Another important requirement for implementing directory access as a Web service is that the system has to be able to handle the addition of new types of directory objects effectively, since typical directory services schema is extensible. As the usage of the Internet is rapidly expanding, there are needs to allow new types of directory objects to be added to the directory service database. To that end, the schema of the directory service database should be extensible. The addition of new directory object types, however, creates the issue of how a client can access objects of those new types. In this regard, it is not desirable or practical to add new methods for accessing each new object type as the new classes appear in the directory service database schema.
Thus, to sum up, there is a need to create a non-chatty, generic, set of web methods that allow the use of simple CRUD operations For accessing directory data as a Web service, while still supporting extensibility of the directory service schema such that new directory object types can be access accessed without the need to add new directory operation methods in the client code.